package com.hospital.service;

import com.hospital.entity.Role;
import com.hospital.entity.User;
import com.hospital.entity.UserRoleVo;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public interface UserRoleService {
    /**
     * 查所有用户对应的所有权限
     *
     * @return 集合中用户对应的角色与权限
     */
    public List<User> SelectAll(Integer page, Integer pageNum);

    /**
     * 查所有用户对应的所有权限数量
     *
     * @return 用户对应的所有权限数量
     */
    public Integer SelectAllCount();

    /**
     * 条件查询
     *
     * @param page        当前页
     * @param pageNum     每页显示条数
     * @param roleName    角色名称
     * @param roleRemarks 角色备注
     * @return 集合中的条件查询对象
     */

    public List<User> SelectByUserRoleLike(Integer page, Integer pageNum, String roleName, String roleRemarks);


    /**
     * 条件查询数量方法
     *
     * @param roleName    角色名称
     * @param roleRemarks 角色备注
     * @return 条件查询数量
     */
    public Integer SelectByUserRoleLikeCount(String roleName, String roleRemarks);

    /**
     * 添加角色方法
     *
     * @param userId 用户id
     * @param roleId 角色id
     * @return 添加状态
     */
    public Integer Insert(Integer userId, Integer roleId);

    /**
     * 修改角色方法
     *
     * @param userId 用户id
     * @param roleId 角色id
     * @return 修改状态
     */
    public Integer Update(Integer roleId, Integer userId);

    /**
     * 用户对应角色
     *
     * @return 集合中的用户对应角色信息
     */
    public List<User> SelectByUserRole(Integer page, Integer pageNum);

    /**
     * 用户对应角色数量
     *
     * @return 数量
     */
    public Integer SelectByUserRoleCount();

    /**
     * 条件查询数量
     *
     * @param responsibleDepartment 科室名称
     * @param name                  人员名称
     * @return 人员数量
     */
    public Integer SelectUserRoleLikeCount(String responsibleDepartment, String name);

    /**
     * 条件查询
     *
     * @param responsibleDepartment 科室名称
     * @param name                  人员名称
     * @return 集合中的用户与角色信息
     */
    public List<User> SelectUserRoleLike(Integer page, Integer pageNum, String responsibleDepartment, String name);

    /**
     * 删除方法
     *
     * @param userId 用户id
     * @return 删除状态
     */
    public Integer Delete(Integer userId);

}
